﻿package {
	// Importa Flixel
	import org.flixel.*;
	
	public class Phase01State extends FlxState {
		// Elementos para construção do mapa
		[Embed(source = "data/map01.txt", mimeType = "application/octet-stream")] private var TxtMap:Class;
		[Embed(source = "data/tiles.png")] private var ImgTiles:Class;
		
		// Objetos do jogo
		private var _tilemap:FlxTilemap;
		private var _player:Player;
		private var _playerX:int;
		private var _playerY:int;
		
		// Método construtor
		public function Phase01State(playerX:int = 0, playerY:int = 0):void {
			_playerX = playerX;
			_playerY = playerY;
		}
		
		// Método de criação
		override public function create():void {
			// Cria tilemap
			_tilemap = new FlxTilemap();
			_tilemap.collideIndex = 1;
			_tilemap.loadMap(new TxtMap, ImgTiles, 80);
			_tilemap.follow();
			
			// Cria o jogador
			_player = new Player(_playerX, _playerY);
			_player.play("idle");
			add(_player);
			
			// Adiciona o tilemap na tela
			add(_tilemap);
		}
		
		// Método de atualização
		override public function update():void {
			super.update();
			// Jogador colide com o mapa
			_tilemap.collide(_player);
			
			// Não deixa o jogador sair da tela
			if (_player.x < 0) {
				_player.x = 0;
			} else if (_player.x > FlxG.width) {
				FlxG.state = new Phase02State(0, 240);
			}
			
			// Se o jogador cair para fora da tela
			// ocorre game over
			if (_player.y > FlxG.height) {
				FlxG.state = new GameOverState();
			}
		}
	}
}